Electrical engineers spend a great deal of effort optimizing circuits. The goal of the optimization may be to minimize the delay or power of the circuit, subject to certain constraints. The optimization is carried out by adjusting or tuning electrical parameters such as component values, transistor sizes and model parameters. Traditionally, electrical engineers simulate the circuit using a circuit simulation computer program to determine the behavior and performance of the circuit. They inspect the results of the simulation and use their intuition or experience to change the tunable parameters and then re-simulate the circuit to determine whether the changes improved the circuit. This process is repeated until the circuit has sufficiently been improved, the product schedule does not permit further optimization or the optimization task is deemed to be impossible or too difficult.
Unfortunately, the above procedure is manual, tedious, error-prone and relies on the intuition (and perhaps luck) of the designer. Therefore, it is desirable to develop automated methods of optimizing circuits. Automatic circuit optimization yields circuits of higher quality or better performance. Automated methods also offer other benefits such as increased designer productivity, better means of understanding the tradeoffs inherent in the design, and lifting of the level of thinking of the designer to a higher level.
Optimization implies minimization or maximization of some objective (such as power or delay), often subject to constraints (such as cost, area, component value limits or transistor size limits). The objective and constraints are often nonlinear functions of the tunable parameters; hence we are interested in nonlinear optimization methods. Most nonlinear optimization software packages, such as SNOPT [Ph. E. Gill, W. Murray and M. A. Saunders, “SNOPT: An SQP Algorithm for Large-Scale Constrained Optimization,” Siam Journal on Optimization, Vol. 12(2002), No. 4, pp. 979–1006], require derivatives of the nonlinear functions of the optimization problem with respect to each tunable parameter. The first derivative of a function ƒ with respect to a tunable parameter x, denoted
            ∂      f              ∂      x        ,gives the optimizer an idea of how the function ƒ will change with a small change in the parameter x. First-order derivatives are also called “gradients” or “sensitivities.” The availability of derivatives enables the solution of large nonlinear optimization problems, with as many as 10s of 1000s of tunable parameters, as demonstrated by the dynamic circuit optimization software JiffyTune [A. R. Conn, P. K. Coulman, R. A. Haring, G. L. Morrill, C. Visweswariah and C. W. Wu, “JiffyTune: circuit optimization using time-domain sensitivities,” IEEE Transactions on Computer-Aided Design of Circuits and Systems, volume 17(12), December 1998, pages 1292–1309] and the static circuit optimization software EinsTuner [A. R. Conn, I. M. Elfadel, W. W. Molzen, Jr., P. R. O'Brien, P. N. Strenski, C. Visweswariah and C. B. Whan, “Gradient-based optimization of custom circuits using a static-timing formulation,” Proceedings of the 1999 ACM/IEEE Design Automation Conference, June 1999, New Orleans, La., pages 452–459]. There is a wealth of information and literature on derivative-based nonlinear optimization methods.
Unfortunately, there are many situations in which derivatives are not available. For example, a design problem may require actual fabrication or assembly of a circuit to measure the values of the objective and constraints. Or the circuit may require simulation by means of a legacy software simulation package whose source code is not available for modification to implement a derivative calculation capability. Or the circuit may have special requirements that dictate that it be simulated by a certain simulator such as SPICE [L. W. Nagel, “SPICE2, a computer program to simulate semiconductor circuits,” Technical Report, University of California at Berkeley, number UCB/ERL M520, May 1975] in which it may be impossible or prohibitive to implement a derivative calculation capability. Or the circuit models may be too complicated or even unavailable, making the necessary chain-ruling of derivatives impossible. In all of these situations, any automated solution is forced to use derivative-free optimization techniques. The situation is further complicated by the fact that simulation of the underlying circuit is often computationally intensive.